<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>Document</title>
    <script type='text/javascript' src='js/vue.js'></script>
</head>
<body>
    <div id='app'>
        {{msg}}
        <father @tofa="addtext"></father>
        <!-- <son></son> -->
    </div>
    <script type='text/javascript'>
        var son = {
            data() {
                return {
                    msg: '我是子组件'
                }
            },
            template: '<div>{{msg}}</div>',
        }
        var father = {
            data() {
                return {
                    msg: '我是父组件'
                }
            },
            // 给组件模板添加click事件，并调用add函数，add函数中使用$emit固定语法自定义一个事件，然后在调用组件的位置使用此处emit定义的事件，并定义一个函数调用，触发事件，从而完成子组件向父组件传递值
            template: `<div @click="add">{{msg}}<son></son></div>`,
            components: {
                son
            },
            methods: {
                add() {
                    this.$emit('tofa','world')      //参数1是传递的自定义事件名,参数2是传递的参数，不是必填项，不填则只触发事件，不传递参数
                }
            }
        }
        var vm = new Vue({
            el: '#app',
            data: {
                msg: 'Hello Vue'
            },
            components: {
                father
            },
            methods: {
                addtext(val) {
                    console.log(val);
                }
            }
        });
    </script>
</body>
</html>